cairo_t *cr,
int width,
int height,
- GtkStateType state_type,
- GtkShadowType shadow_type,
- const gchar *main_detail,
- const gchar *default_detail)
+ GtkStateFlags state)
{
GtkButtonPrivate *priv = button->priv;
GtkWidget *widget;
GtkAllocation allocation;
GdkWindow *window;
GtkStyleContext *context;
- GtkStateFlags state;
widget = GTK_WIDGET (button);
-
context = gtk_widget_get_style_context (widget);
- state = gtk_widget_get_state_flags (widget);
+
+ gtk_style_context_save (context);
+ gtk_style_context_set_state (context, state);
gtk_button_get_props (button, &default_border, &default_outside_border, NULL, &interior_focus);
gtk_style_context_get_style (context,
height -= 2 * (focus_width + focus_pad);
}
- state = gtk_widget_get_state_flags (widget);
- gtk_style_context_set_state (context, state);
-
if (priv->relief != GTK_RELIEF_NONE || priv->depressed ||
state & GTK_STATE_FLAG_PRELIGHT)
{
gtk_border_free (border);
}
+
+ gtk_style_context_restore (context);
}
static gboolean
cairo_t *cr)
{
GtkButton *button = GTK_BUTTON (widget);
- GtkButtonPrivate *priv = button->priv;
_gtk_button_paint (button, cr,
gtk_widget_get_allocated_width (widget),
gtk_widget_get_allocated_height (widget),
- gtk_widget_get_state (widget),
- priv->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT,
- "button", "buttondefault");
+ gtk_widget_get_state_flags (widget));
GTK_WIDGET_CLASS (gtk_button_parent_class)->draw (widget, cr);
GtkToggleButtonPrivate *priv = toggle_button->priv;
GtkWidget *child = gtk_bin_get_child (GTK_BIN (widget));
GtkButton *button = GTK_BUTTON (widget);
- GtkStateType state_type;
- GtkShadowType shadow_type;
+ GtkStateType state;
- state_type = gtk_widget_get_state (widget);
+ state = gtk_widget_get_state_flags (widget);
if (priv->inconsistent)
- {
- if (state_type == GTK_STATE_ACTIVE)
- state_type = GTK_STATE_NORMAL;
- shadow_type = GTK_SHADOW_ETCHED_IN;
- }
- else
- shadow_type = button->priv->depressed ? GTK_SHADOW_IN : GTK_SHADOW_OUT;
+ state |= GTK_STATE_FLAG_INCONSISTENT;
+ else if (button->priv->depressed)
+ state |= GTK_STATE_FLAG_ACTIVE;
_gtk_button_paint (button, cr,
gtk_widget_get_allocated_width (widget),
gtk_widget_get_allocated_height (widget),
- state_type, shadow_type,
- "togglebutton", "togglebuttondefault");
+ state);
if (child)
gtk_container_propagate_draw (GTK_CONTAINER (widget), child, cr);